package com.lv.fast.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.lv.fast.DTO.SysRoleDTO;
import com.lv.fast.DTO.SysRolePageQuery;
import org.springframework.transaction.annotation.Transactional;

import java.util.LinkedHashSet;

/**
 * @Description
 * @Author jie.lv
 */
public interface SysRoleService {

    /**
     * 根据用户Id获取角色列表
     * @param userId 用户Id
     * @param isContainsMenus 是否包含菜单
     * @return 角色列表
     */
    LinkedHashSet<SysRoleDTO> listUserRoleByUserId(String userId, boolean isContainsMenus);

    /**
     * 分页查询角色列表
     * @param pageQuery 分页条件
     * @return 带分页信息的角色列表
     */
    IPage<SysRoleDTO> list(SysRolePageQuery pageQuery);

    /**
     * 根据角色Id获取角色详情
     * @param id 角色Id
     * @return 角色对象
     */
    SysRoleDTO get(String id);

    /**
     * 更新角色信息
     * @param sysRoleDTO 角色对象
     * @return 是否成功
     */
    @Transactional(rollbackFor = Throwable.class)
    boolean update(SysRoleDTO sysRoleDTO);

    /**
     * 新增角色
     * @param sysRoleDTO 角色对象
     * @return 是否成功
     */
    @Transactional(rollbackFor = Throwable.class)
    boolean add(SysRoleDTO sysRoleDTO);

    /**
     * 删除角色
     * @param roleId 角色Id
     * @return 是否成功
     */
    @Transactional(rollbackFor = Throwable.class)
    boolean delete(String roleId);
}
